package arrayexample;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayExample {
    public static void main(String[] args) {

        int[] arr = { 1, 2, 3, 4 };

        ArrayExample example = new ArrayExample();

//		example.printArr(arr);
//
//		example.changeIndexOf(arr);
//
//		arr = example.arrAdd(arr);
//
//		example.printArr(arr);
//
//		arr = example.arrRemove(arr);
//
//		example.printArr(arr);

        ArrayList<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+" ");
        }

        System.out.println();

        list.remove(0);

        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+" ");
        }
    }

    /**
     * 打印数组的方法
     */
    public void printArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }

    /**
     * 替换对应下标的数字
     *
     * @param arr
     */
    public void changeIndexOf(int[] arr) {
        int arrLength = arr.length;

        // 控制台输入第几个数，要换成什么数字

        System.out.println("请输入要替换第几个下标，下标的长度不能超过" + arrLength);

        Scanner scanner = new Scanner(System.in);

        // 获取用户输入的下标
        int indexOf = scanner.nextInt() - 1;

        if (indexOf < arrLength) {

            System.out.println("请输入要替换的数字");

            // 获取用户输入的要替换的数字
            int num = scanner.nextInt();

            arr[indexOf] = num;

            printArr(arr);

        } else {
            System.out.println("输入错误");
        }
    }

    /**
     * 数组添加值
     *
     * @param arr
     */
    public int[] arrAdd(int[] arr) {

        // 我们这边往数组里面去添加一个数字

        System.out.println("请输入添加到数组里面的数字");

        Scanner scanner = new Scanner(System.in);

        int num = scanner.nextInt();

        // 添加一个数到数组里面去的时候，需要注意什么？是不是数组的长度需要+1

        // 创建一个长度比原来数组+1的数组
        int[] arr1 = new int[arr.length + 1];

        // 将原来数组里面的数字搬运到新的数组里面去
        for (int i = 0; i < arr.length; i++) {
            arr1[i] = arr[i];
        }

        // 把数字添加到数组的最后一个位置去
        arr1[arr1.length - 1] = num;

        return arr1;

    }

    public int[] arrRemove(int[] arr) {
        // 数组删除元素

        // 创建一个长度比原来数组-1的数组
        int[] arr1 = new int[arr.length - 1];

        // 控制台输入第几个数，要换成什么数字

        System.out.println("请输入要删除第几个下标，下标的长度不能超过" + arr.length);

        Scanner scanner = new Scanner(System.in);

        // 获取用户输入的下标
        int indexOf = scanner.nextInt() - 1;

        for (int i = 0; i < arr.length; i++) {
            // 需要提过indexOf值
            // 如果i<indexOf,这时候执行arr1[i]=arr[i];
            // 如果i>indexOf,这时候执行arr1[i-1]=arr[i];

            if (i < indexOf) {
                arr1[i] = arr[i];
            } else if (i > indexOf) {
                arr1[i - 1] = arr[i];
            }
        }

        return arr1;
    }
}
